1. Technical Field
The present invention concerns network data distribution and more particularly a method for providing improved performance in networks using (multicast technology.
2. Description of the Related Art
In a traditional distributed data network, one or more server nodes and a plurality of client nodes communicate with one another using well known network protocols. Typically, distributed data applications include server nodes which can provide centralized distribution and consolidation of data for client nodes connected to the network. Currently, client nodes are approaching two extremes: the xe2x80x9cthin-clientxe2x80x9d which acts on or monitors small subsets of data, and the xe2x80x9cfat clientxe2x80x9d that performs data reduction on large amounts of real-time information over the network, data recording, and other similar activities. With regard to the latter, critical processing can occur within the fat client and often necessitates managing large subsets of high-speed, real-time data.
Management of high-speed data across distributed data networks can involve two basic approaches. The more common approach has been referred to as the xe2x80x9cclient-basedxe2x80x9d approach, where client nodes notify server nodes of their interest in certain desired data. In effect, the client-based approach implements a subscribe-unsubscribe paradigm. Using the client-based approach, servers can individually distribute data packets to each interested, subscribing client. The client-based approach, however, tends to overburden the server as network demands grow. Specifically, as additional client nodes are added to the network, the server not only must individually distribute the data packets to each interested client node, but also the server must individually distribute the data packets to each additional subscribing client node. Hence, as the client node list grows, so does the server""s workload.
The second approach is a xe2x80x9cserver-basedxe2x80x9d approach, in which servers broadcast data packets to all client nodes residing on the network. By using multicast technology, the server merely sends each data packet once. Correspondingly, all client nodes receive the singly transmitted data packet simultaneously. Specifically, to broadcast a data packet, the server transmits the data packet to a multicast destination address identifying a particular multicast session, rather than a specific physical address of a client node. Interested client nodes merely subscribe to the multicast address, rather than the server, in order to receive the broadcast data. By employing multicasting technology, as the number of client nodes increase, servers are not required to match the increased number of client nodes with an increased number of data packet transmissions. In consequence, the servers do not become over-burdened and may feed even larger client bases. Still, because all client nodes receive each broadcast data packet, regardless of the content of the data packet, each client node must filter unwanted data upon receipt of each data packet.
Client nodes generally are uninterested in most of the broadcast data and, as a result, client nodes expend substantial processor resources identifying and discarding unwanted data packets. In particular, network applications in client nodes receiving broadcast data must identify each received data packet and determine whether or not to discard the same. Hence, while the foregoing approach allows a server to provide data at higher data transmission rates to more clients nodes, because of the aforementioned processor overhead, the approach eventually can limit the client node""s ability to filter unwanted data packets. Specifically, although present computers are reaching ever-faster processing speeds and network bandwidths are large, network users increasingly broadcast more data across the network, challenging the client node""s ability to filter the unwanted data packets while, at the same time, satisfying their increasing appetite for data.
A method for efficient filtering of unwanted data in a multicast network environment in accordance with the inventive arrangement satisfies the long-felt need of the prior art by applying a combination hardware and software solution which selectively filters multicast data by selectively disabling channels containing unwanted data. The inventive arrangements have advantages over all other data distribution methods, and provides a novel and nonobvious method for receiving the benefits of multicasting while avoiding the drawbacks associated with such systems.
The method can include receiving from a process in a client node a request for multicast data; identifying a source for the requested multicast data; determining a source communications channel for receiving the requested multicast data; enabling the source communications channel; receiving the multicast data through the source communications channel; and, forwarding the multicast data to the requesting client node process. Furthermore, the method can include filtering from the received multicast data unrequested multicast data; discarding the unrequested multicast data; and, forwarding the filtered multicast data to the process.
The preferred embodiment can include several dynamic methods for determining a source communications channel. For instance, the determining step can include hashing the identified source of the requested multicast data; and, identifying as the source communications channel the hashed source of the requested multicast data. Alternatively, the determining step can include receiving from the source of the requested multicast data a channel identification message identifying the source communications channel. Finally, the determining step can include monitoring the multicast channels for the requested multicast data; and processing multicast data received by way of the multicast channels to determine a source communications channel on which the requested multicast data is being transmitted. In contrast to the above-identified dynamic methods, at least one static method for determining a source communications channel can be employed. Specifically, in the static method, the determining step can include constructing a configuration table of sources of multicast data and source communications channels. Each source of multicast data in the configuration table can correspond to a source communication channel. Subsequently, a source communications channel corresponding to a source of the requested multicast data can be located in the configuration table .
A method for receiving requested multicast data over a plurality of multicast communications channels includes the steps of determining a source communications channel for receiving requested multicast data; enabling the source communications channel; receiving the requested multicast data through the source communications channel; and, forwarding the requested multicast data to requesting processes. In the preferred embodiment, the source communications channel is overloaded with multicast data from a plurality of multicast data sources. In consequence, the method can further include both the steps of filtering from the received multicast data, unwanted multicast data; and, forwarding the filtered multicast data to requesting processes.
In a preferred embodiment, the determining step can further include hashing an identifier corresponding to a source of the requested multicast data; and, identifying as the source communications channel, the hashed identifier. In an alternative embodiment, the determining step can include the steps of receiving from a source of the requested multicast data a channel identification message identifying the source communications channel. In yet another alternative embodiment, the determining step can include monitoring a plurality of communications channels for the requested data; and processing multicast data received by way of the communications channels to determine at least one source communications channel on which the requested data is being transmitted. Unlike the above identified dynamic methods for determining the source communications channel, an alternative embodiment can incorporate a static method. In the static method, the determining step can include constructing a configuration table of sources of multicast data and source communications channels, where each source of the multicast data corresponds to a source communication channel. Subsequently, a source communications channel corresponding to a source of the requested multicast data can be located in the configuration table
A method for efficient filtering of multicast data in a network client node can comprise the following steps: receiving from a plurality of processes in a client node requests for multicast data; identifying a multicast data source for each request; determining a source communications channel for each multicast data source; enabling each source communications channel; receiving multicast data through the source communications channels; and forwarding to each requesting process, multicast data corresponding to the request by the requesting process. The method can further include filtering from the multicast data received from the source communications channels, unrequested multicast data; discarding the unrequested multicast data; and, routing the filtered multicast data to the processes. In the preferred embodiment, the determining step can include hashing each identified multicast data source; and, identifying source communications channels for each hashed multicast data source. Moreover, in one embodiment, the identified source is a domain name having at least one module containing the requested multicast data.